#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QSerialPort>        //提供访问串口的功能
#include <QSerialPortInfo>    //提供系统中存在的串口的信息
#include "QTimerEvent"
#include  "QTimer"
#include "QPushButton"
#include "QThread"
#include "QFile"
#include "QFileDialog"
#include "QTextBrowser"
#include "QCryptographicHash"
#include "QMenu"
#include "QMenuBar"
#include <QAction>
#include <QMessageBox>
#include <QToolBar>

#include "mytool.h"

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = nullptr);
    ~MainWindow(); 
public:
    QSerialPort serial; //创建一个串口对象 
    QTimer TIME1;       //创建一个定时器1
    QTimer TIME2;       //创建一个定时器2

    long time1out = 0;
    long time2out = 0;

    QByteArray  serial_RX_BUFF; //用于存储串口接收到的数据

    unsigned int MeterNum_Cnt_Recv;   // 接收到的数据包累计

    unsigned int MeterNum_Cnt;         // 有效表号总数量

    unsigned int MeterNum_Cnt_index;  // 当前执行抄表的索引号

    bool  rx_status; //接收的状态 0 表示空闲，1 表示正在处理

    QByteArray MD5_BUF;

    unsigned char meter_num[100][7]; // 最多容纳100只表的表号

protected:

    //void timerEvent(QTimerEvent*event);

private slots:

    void serial_slots_IRQHandler(void);

    void timer_slots_IRQHandler(void);

    void timer2_slots_IRQHandler(void);

//  以下槽函数自动生成

    void on_uart_button_clicked();

    void on_com_Box_currentIndexChanged(int index);

    void on_band_Box_currentIndexChanged(int index);

    void on_checkBit_Box_currentIndexChanged(int index);

    void on_dataBit_Box_currentIndexChanged(int index);

    void on_stopBit_Box_currentIndexChanged(int index);

    void on_file_down_clicked(void);

    void on_file_send_boutton_clicked(void);

    void on_actioninformation_triggered(void);

    void on_getMCUVersion_clicked(void);

    void on_ClearLog_clicked();

private:

    Ui::MainWindow *ui;
    QAction *openAction;

    void app_uart_init(void);
    void signal_serial_data_handler(void);  //
    void parInit(void); //参数初始化
    void meter_read(int meter_index);

signals:



};


#endif // MAINWINDOW_H
